package command

import (
	"codejy/globalfunc"
	"codejy/store"
	"codejy/structdef"
	"flag"
)

type CodeExceCmd struct {
	code     string //主文件路径
	priority int    //优先级
}

func init() {
	RegisterCommand(&CodeExceCmd{
		priority: 3,
	})
}

// 绑定
func (m *CodeExceCmd) Bind() {
	flag.StringVar(&m.code, m.GetName(), "", m.GetDesc())
}

// 满足条件才执行命令
func (m *CodeExceCmd) Condition() bool {
	return m.code != ""
}

// 执行命令
func (m *CodeExceCmd) Execute(threadStore *structdef.ThreadStore) {
	//允许行代码执行
	globalfunc.ExecuteFunc("RunCmdLineCode", store.MainThreadStore, m.code)
}

// 获取命令名称
func (m *CodeExceCmd) GetName() string {
	return "code"
}

// 获取命令描述
func (m *CodeExceCmd) GetDesc() string {
	return `单行执行代码 列如: -code println("你好,世界")`
}

// 优先级  ,0最低...
func (m *CodeExceCmd) GetPriority() int {
	return m.priority
}

// 是否终止
func (m *CodeExceCmd) IsExit() bool {
	return true
}
